package com.rpc.http.httpserver;

import com.rpc.http.httpresolver.DispatcherServlet;
import org.apache.catalina.*;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardEngine;
import org.apache.catalina.core.StandardHost;
import org.apache.catalina.startup.Tomcat;


/*
*功能：
 作者：chenhao
*日期： 2025/5/26 下午8:35
*/
public class HttpServer {
    public void start(String hostname,Integer port){
        //读取用户配置 server.name = netty/tomcat
                Tomcat tomcat = new Tomcat();
                Server server = tomcat.getServer();
                Service service = server.findService("Tomcat");

                Connector connector = new Connector();
                connector.setPort(port);

                Engine engine = new StandardEngine();
                engine.setDefaultHost(hostname);

                Host host = new StandardHost();
                host.setName(hostname);

                String contextPath = "";
                Context context = new StandardContext();
                context.setPath(contextPath);
                context.addLifecycleListener(new Tomcat.FixContextListener());
                host.addChild(context);
                engine.addChild(host);
                service.setContainer(engine);
                service.addConnector(connector);
                tomcat.addServlet(context, "dispatcher", new DispatcherServlet());
                context.addServletMappingDecoded("/*", "dispatcher");
                try {
                    tomcat.start();
                    tomcat.getServer().await();
                } catch (LifecycleException e) {
                    e.printStackTrace();
                }



    }
}
